<?php

namespace app\admin\controller;

use think\Controller;
use think\Request;
use \app\admin\controller\Base;

class Rule extends Base
{

    // 角色 首页
    public function index()
    {
        // 访问的角色管理
        $title= '角色管理';

        // 获取角色的权限列表
        $data = \app\admin\model\Rule::select();

        return view("/rule/index",[
            'title' => $title,
            'data' => $data
        ]);
    }

    // 新增角色管理
    public function add()
    {
        //
        $title = "添加角色";

        // 获取所有权限名称
        $data = \app\admin\model\Auth::select();

        // 查询所有的一级分类、
        $up_tree = \app\admin\model\Auth::where("pid",0)->select();

        // 查询所有的二级分类
        $down_tree = \app\admin\model\Auth::where("pid","<>",0)->select();

        return view("rule/add",[
            'title' => $title,
            'data' => $data,
            'up_tree' => $up_tree,
            'down_tree' => $down_tree
        ]);
    }

    // 添加角色管理
    public function insert(Request $reuqest)
    {
        $data = $reuqest->param();

        $rule = [
            'role_name|角色名' => 'require|token',
            'role_ids|权限分类' => 'require'
        ];

        $validate = new \think\Validate($rule);
        if(!$validate->check($data))
        {
            $error = $validate->getError();
            $this->error($error);
        }

        // 将数组 分割成字符串 格式
        $data['role_ids'] = implode($data['role_ids'],',');

        \app\admin\model\Rule::create($data,true);

        $this->success("添加角色成功","admin/Rule/index");
    }

    // 角色修改
    public function edit(int $id)
    {
        if(empty($id))
        {
            $this->error("参数错误",'admin/rule/index');
            die;
        }

        $title = "角色修改";
        // 单条数据
        $data = \app\admin\model\Rule::find($id);


        // 获取所有的顶级分类
        $uptree = \app\admin\model\Auth::where("pid",0)->select();

        // 获取所有的二级分类
        $downtree = \app\admin\model\Auth::where("pid",'<>',0)->select();

        return view('/rule/edit',[
            'title' => $title,
            'data' => $data,
            'uptree' => $uptree,
            'downtree' => $downtree
        ]);
    }

    // 角色更新
    public function update(Request $request)
    {
        $data = $request->param();

        $rule = [
            'role_name|角色名' => 'require|token',
            'role_ids|控制器方法' => 'require'
        ];

        $validate = new \think\Validate($rule);

        if(!$validate->check($data))
        {
            $error = $validate->getError();
            $this->error($error);
        }

        // 获取更新的数据
        $data['role_ids'] = implode($data['role_ids'],',');

        \app\admin\model\Rule::update($data,['id'=>$data['id']],true);

        $this->success("修改成功","admin/rule/index");

    }

    // 删除方法
    public function delete(int $id)
    {
        if(empty($id)){
            $this->error("参数错误","admin/Type/index");
            die;
        }

        \app\admin\model\Rule::destroy($id);

        $this->success("删除成功","admin/Type/index");
        die;
    }
}
